package marco.android.CouchControl;

import marco.android.CouchControl.R;

public class ParticleSystem
{
//	void setup() {
//
//		  size(640, 200);
//		  colorMode(RGB, 255, 255, 255, 100);
//
//		  // Using a Java random number generator for Gaussian random numbers
//		  generator = new Random();
//
//		  // Create an alpha masked image to be applied as the particle's texture
//		  PImage msk = loadImage("texture.gif");
//		  PImage img = new PImage(msk.width,msk.height);
//		  for (int i = 0; i < img.pixels.length; i++) img.pixels[i] = color(255);
//		  img.mask(msk);
//		  ps = new ParticleSystem(0, new PVector(width/2,height-20 ),img);
//
//		  smooth();
//		}
//
//		void draw() {
//		  background(75);
//
//		  // Calculate a "wind" force based on mouse horizontal position
//		  float dx = (mouseX - width/2) / 1000.0;
//		  PVector wind = new PVector(dx,0,0);
//		  displayVector(wind,width/2,50,500);
//		  ps.add_force(wind);
//		  ps.run();
//		  for (int i = 0; i < 2; i++) {
//		    ps.addParticle();
//		  }
//		}
//
//		 void displayVector(PVector v, float x, float y, float scayl) {
//		    pushMatrix();
//		    float arrowsize = 4;
//		    // Translate to location to render vector
//		    translate(x,y);
//		    stroke(255);
//		    // Call vector heading function to get direction (note that pointing up is a heading of 0) and rotate
//		    rotate(v.heading2D());
//		    // Calculate length of vector & scale it to be bigger or smaller if necessary
//		    float len = v.mag()*scayl;
//		    // Draw three lines to make an arrow (draw pointing up since we've rotate to the proper direction)
//		    line(0,0,len,0);
//		    line(len,0,len-arrowsize,+arrowsize/2);
//		    line(len,0,len-arrowsize,-arrowsize/2);
//		    popMatrix();
//		  } 
//
//
//
//
//
//
//
//
//
//
//
//
//
//		// A class to describe a group of Particles
//		// An ArrayList is used to manage the list of Particles 
//
//		class ParticleSystem {
//
//		  ArrayList particles;    // An arraylist for all the particles
//		  PVector origin;        // An origin point for where particles are birthed
//		  PImage img;
//		  
//		  ParticleSystem(int num, PVector v, PImage img_) {
//		    particles = new ArrayList();              // Initialize the arraylist
//		    origin = v.get();                        // Store the origin point
//		    img = img_;
//		    for (int i = 0; i < num; i++) {
//		      particles.add(new Particle(origin, img));    // Add "num" amount of particles to the arraylist
//		    }
//		  }
//
//		  void run() {
//		    // Cycle through the ArrayList backwards b/c we are deleting
//		    for (int i = particles.size()-1; i >= 0; i--) {
//		      Particle p = (Particle) particles.get(i);
//		      p.run();
//		      if (p.dead()) {
//		        particles.remove(i);
//		      }
//		    }
//		  }
//		  
//		  // Method to add a force vector to all particles currently in the system
//		  void add_force(PVector dir) {
//		    for (int i = particles.size()-1; i >= 0; i--) {
//		      Particle p = (Particle) particles.get(i);
//		      p.add_force(dir);
//		    }
//		  
//		  }  
//
//		  void addParticle() {
//		    particles.add(new Particle(origin,img));
//		  }
//
//		  void addParticle(Particle p) {
//		    particles.add(p);
//		  }
//
//		  // A method to test if the particle system still has particles
//		  boolean dead() {
//		    if (particles.isEmpty()) {
//		      return true;
//		    } else {
//		      return false;
//		    }
//		  }
//
//		}
//
//
//
//
//
//		// A simple Particle class, renders the particle as an image
//
//		class Particle {
//		  PVector loc;
//		  PVector vel;
//		  PVector acc;
//		  float timer;
//		  PImage img;
//
//		  // One constructor
//		  Particle(PVector a, PVector v, PVector l, PImage img_) {
//		    acc = a.get();
//		    vel = v.get();
//		    loc = l.get();
//		    timer = 100.0;
//		    img = img_;
//		  }
//
//		  // Another constructor (the one we are using here)
//		  Particle(PVector l,PImage img_) {
//		    acc = new PVector(0.0,0.0,0.0);
//		    float x = (float) generator.nextGaussian()*0.3f;
//		    float y = (float) generator.nextGaussian()*0.3f - 1.0f;
//		    vel = new PVector(x,y,0);
//		    loc = l.get();
//		    timer = 100.0;
//		    img = img_;
//		  }
//
//		  void run() {
//		    update();
//		    render();
//		  }
//		  
//		  // Method to apply a force vector to the Particle object
//		  // Note we are ignoring "mass" here
//		  void add_force(PVector f) {
//		    acc.add(f);
//		  }  
//
//		  // Method to update location
//		  void update() {
//		    vel.add(acc);
//		    loc.add(vel);
//		    timer -= 2.5;
//		    acc.mult(0);
//		  }
//
//		  // Method to display
//		  void render() {
//		    imageMode(CORNER);
//		    tint(255,timer);
//		    image(img,loc.x-img.width/2,loc.y-img.height/2);
//		  }
//
//		  // Is the particle still useful?
//		  boolean dead() {
//		    if (timer <= 0.0) {
//		      return true;
//		    } else {
//		      return false;
//		    }
//		  }
//		}
}
